package me.zhengjie.utils;

import me.zhengjie.exception.BadRequestException;

/**
 * 断言工具类
 * 用于参数校验，当校验不通过时抛出 BadRequestException 异常
 */
public class AssertUtil {

    /**
     * 断言对象不为 null
     *
     * @param obj 待校验对象
     * @param message 异常信息
     */
    public static void notNull(Object obj, String message) {
        if (obj == null) {
            throw new BadRequestException(message);
        }
    }

    /**
     * 断言字符串不为空（null 或空字符串）
     *
     * @param str 待校验字符串
     * @param message 异常信息
     */
    public static void notEmpty(String str, String message) {
        if (str == null || str.isEmpty()) {
            throw new BadRequestException(message);
        }
    }

    /**
     * 断言字符串不为空白（null、空字符串或仅包含空白字符）
     *
     * @param str 待校验字符串
     * @param message 异常信息
     */
    public static void notBlank(String str, String message) {
        if (str == null || str.trim().isEmpty()) {
            throw new BadRequestException(message);
        }
    }

    /**
     * 断言表达式为 true
     *
     * @param expression 待校验表达式
     * @param message 异常信息
     */
    public static void isTrue(boolean expression, String message) {
        if (!expression) {
            throw new BadRequestException(message);
        }
    }

    /**
     * 断言对象为 null
     *
     * @param obj 待校验对象
     * @param message 异常信息
     */
    public static void isNull(Object obj, String message) {
        if (obj != null) {
            throw new BadRequestException(message);
        }
    }
}
